<template>
  <div>
    <!-- on-success 属性，是一个函数 -->
    <UploadExcel :on-success="successFn" />
  </div>
</template>

<script>
// 引入批量导入员工方法
import { importEmployees } from '@/api/employees'
export default {

  methods: {
    async successFn(data) {
      // data：就是上传的表格中的数据
    //   console.log(data)

      /**
       * 这里我们data就是获取到表格中的数据，name接下来我们只需要通过批量导入接口
       * 把这些数据传递后端，就能实现导入功能了。
       * 但是查看data数据，发现所有的属性名都是中文的，但是接口要求的传递的时候属性名必须是
       * 英文的，因此我们接下来 调用接口之前要先转换数据。
       * */

      const newArr = data.results.map(item => {
        // 处理逻辑  把 item中的属性名改为对应的英文名
        const obj = {
          '姓名': 'username',
          '手机号': 'mobile',
          '工号': 'workNumber',
          '入职日期': 'timeOfEntry',
          '转正日期': 'correctionTime'
        }
        const newObj = {}
        for (const key in item) {
          // key: item对象中的中文属性名
          // obj[key]：获取中文属性名对应的英文属性名
          // item[key]：获取到item对象中中文属性名对应的值
          // console.log(key, obj[key], item[key])

          if (key === '入职日期' || key === '转正日期') {
            // 因为我们从Excel表格中得到的日期是 从1900开始算起的天数
            // 因此这里需要转换为年月日的格式 再传递给后端
            newObj[obj[key]] = this.formatExcelDate(item[key])
          } else {
            newObj[obj[key]] = item[key]
          }
        }
        return newObj
      })
      //   console.log('转换好的英文属性名数组', newArr)
      // 调用接口 批量导入
      await importEmployees(newArr)
      // 返回员工列表页面
      // back() 返回上一页方法
      this.$router.back()
    },
    /**
 * 格式化Excel表中存储的年月日日期
 * @param {number} num - excel存储的数字
 * @param {string} [format = '-'] - 年月日的间隔符，默认为'-'
 * @returns {string} 格式化后的日期
 */
    formatExcelDate(num, format = '-') {
      if (!/^\d+$/.test(num)) return
      num = parseInt(num)
      let millisecond = 0 // 转化后的毫秒数
      if (num > 60) { // 对大于60的日期进行减1处理
        millisecond = (num - 25568 - 1) * 3600 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 3600 * 24 * 1000
      }
      const date = new Date(millisecond) // 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const m = date.getMonth() + 1
      const mm = m >= 10 ? m : '0' + m
      const d = date.getDate()
      const dd = d >= 10 ? d : '0' + d
      return yy + format + mm + format + dd // 返回格式化后的日期
    }
  }
}
</script>

<style>

</style>
